From c07ad7f9f895c0aa430bc4518e50c5c089c2f6b4 Mon Sep 17 00:00:00 2001 From: Alex Williamson Date: Mon, 4 Jun 2007 14:00:35 -0600 Subject: [PATCH] [IA64] Disable more privify code Conditionally comment two privify code blocks. Signed-off-by: Tristan Gingold --- xen/arch/ia64/xen/ivt.S | 6 +++++- xen/arch/ia64/xen/privop.c | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/xen/arch/ia64/xen/ivt.S b/xen/arch/ia64/xen/ivt.S index 448689e27f..5439d5d2f2 100644 --- a/xen/arch/ia64/xen/ivt.S +++ b/xen/arch/ia64/xen/ivt.S @@ -587,9 +587,13 @@ ENTRY(break_fault) ;; ld8 r18=[r18] ;; - cmp.eq p7,p0=r0,r17 // is this a psuedo-cover? +#ifdef CONFIG_PRIVIFY + // pseudo-cover are replaced by break.b which (unfortunatly) always + // clear iim. + cmp.eq p7,p0=r0,r17 (p7) br.spnt.many dispatch_privop_fault ;; +#endif // if (ipsr.cpl == 2 && (iim - HYPERPRIVOP_START) < HYPERPRIVOP_MAX) // this is a hyperprivop. A hyperprivop is hand-coded assembly with // psr.ic off which means it can make no calls, cannot use r1-r15, diff --git a/xen/arch/ia64/xen/privop.c b/xen/arch/ia64/xen/privop.c index 1ee423b44b..559c3e44ea 100644 --- a/xen/arch/ia64/xen/privop.c +++ b/xen/arch/ia64/xen/privop.c @@ -702,7 +702,7 @@ static IA64FAULT priv_handle_op(VCPU * vcpu, REGS * regs, int privlvl) perfc_incr(bsw1); return priv_bsw1(vcpu, inst); } - if (inst.B8.x6 == 0x0) { + if (privify_en && inst.B8.x6 == 0x0) { // break instr for privified cover perfc_incr(cover); return priv_cover(vcpu, inst); -- 2.30.2